Package oscP5

Source Code of oscP5.OscPacket

/**
* An OSC (Open Sound Control) library for processing.
*
* (c) 2004-2011
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA  02111-1307  USA
*
* @author    Andreas Schlegel http://www.sojamo.de/libraries/oscP5
* @modified  12/19/2011
* @version    0.9.8
*/

package oscP5;

import java.net.DatagramPacket;
import java.net.InetAddress;
import netP5.Bytes;
import netP5.NetAddress;
import netP5.TcpPacket;
import netP5.TcpClient;

/**
* @invisible
*/
public abstract class OscPacket extends OscPatcher {

    protected static final int MESSAGE = 0;


    protected static final int BUNDLE = 1;


    protected InetAddress inetAddress;


    protected String hostAddress;


    protected int _myType;


    protected TcpClient _myTcpClient = null;


    protected int port;

    /**
     * @invisible
     */
    public OscPacket() {}


    protected static OscPacket parse(DatagramPacket theDatagramPacket) {
        if (evaluatePacket(theDatagramPacket.getData()) == MESSAGE) {
            return new OscMessage(theDatagramPacket);
        } else {
            return new OscBundle(theDatagramPacket);
        }
    }


    protected static OscPacket parse(TcpPacket theTcpPacket) {
        if (evaluatePacket(theTcpPacket.getData()) == MESSAGE) {
            return new OscMessage(theTcpPacket);
        } else {
            return new OscBundle(theTcpPacket);
        }
    }


    private static int evaluatePacket(byte[] theBytes) {
        return (Bytes.areEqual(OscBundle.BUNDLE_AS_BYTES, Bytes.copy(theBytes, 0, OscBundle.BUNDLE_AS_BYTES.length))) ? BUNDLE
                : MESSAGE;
    }


    /**
     * when in TCP mode, tcpConnection() returns the instance of the TcpClient that has sent the OscMessage.
     * @return TcpClient
     */
    public TcpClient tcpConnection() {
        return _myTcpClient;
    }


    protected boolean isValid() {
        return isValid;
    }


    protected int type() {
        return _myType;
    }


    public int port() {
        return port;
    }


    public NetAddress netAddress() {
        return new NetAddress(inetAddress, port);
    }


    /**
     * @deprecated
     * @invisible
     * @return NetAddress
     */
    public NetAddress netaddress() {
        return new NetAddress(inetAddress, port);
    }


    /**
     * @return String
     */
    public String address() {
        return hostAddress;
    }


    /**
     * @return byte[]
     * @invisible
     */
    public abstract byte[] getBytes();

}
TOP

Related Classes of oscP5.OscPacket

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.